From edaf64e15d9ef64586d5f757adc4ca075a4ffdc7 Mon Sep 17 00:00:00 2001 From: Matt Brubeck Date: Thu, 2 Jun 2016 13:53:31 -0700 Subject: [PATCH] Strip native= prefix from -L arg before additing it to LD_LIBRARY_PATH Fixes #2765. --- src/cargo/ops/cargo_rustc/compilation.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/cargo/ops/cargo_rustc/compilation.rs b/src/cargo/ops/cargo_rustc/compilation.rs index 45c0e495b..a01af9f59 100644 --- a/src/cargo/ops/cargo_rustc/compilation.rs +++ b/src/cargo/ops/cargo_rustc/compilation.rs @@ -94,8 +94,24 @@ impl<'cfg> Compilation<'cfg> { pub fn process(&self, cmd: CommandType, pkg: &Package) -> CargoResult { let mut search_path = util::dylib_path(); + + // Add -L arguments, after stripping off prefixes like "native=" or "framework=". for dir in self.native_dirs.iter() { - search_path.push(dir.clone()); + let dir = match dir.to_str() { + Some(s) => { + let mut parts = s.splitn(2, '='); + match (parts.next(), parts.next()) { + (Some("native"), Some(path)) | + (Some("crate"), Some(path)) | + (Some("dependency"), Some(path)) | + (Some("framework"), Some(path)) | + (Some("all"), Some(path)) => path.into(), + _ => dir.clone(), + } + } + None => dir.clone(), + }; + search_path.push(dir); } search_path.push(self.root_output.clone()); search_path.push(self.deps_output.clone()); @@ -109,7 +125,7 @@ impl<'cfg> Compilation<'cfg> { } } - let metadata = pkg.manifest().metadata(); + let metadata = pkg.manifest().metadata(); cmd.env("CARGO_MANIFEST_DIR", pkg.root()) .env("CARGO_PKG_VERSION_MAJOR", &pkg.version().major.to_string()) -- 2.30.2